#pragma once

#include "iostream"
#include "vector"
#include "algorithm"

using namespace std;

/*HJJ QQ479287006
 *给定一个长度为 n 的整数数组 height 。有 n 条垂线，第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明：你不能倾斜容器。
输入：[1,8,6,2,5,4,8,3,7]
输出：49
解释：图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下，容器能够容纳水（表示为蓝色部分）的最大值为 49。
示例 2：

输入：height = [1,1]
输出：1

来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/container-with-most-water
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
来源：力扣（LeetCode）
链接：https://leetcode.cn/problems/container-with-most-water
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * */
int maxArea(vector<int> &height) {
/*       0 1 2 3 4 5 6 7 8
 * 输入：[1,8,6,2,5,4,8,3,7]
   输出：49
 * */

    int low = 0;
    int high = height.size() - 1;
    int sum = -1;
    int temp = 0;


    while (low < high) {
        height[high] >= height[low] ? temp = height[low] : temp = height[high];
        if (((high - low) * temp) > sum)
            sum = ((high - low) * temp);
        if (height[low] >= height[high])
            --high;
        else
            ++low;
    }


    return sum;

}